- 接下來實作的是現有資料與Azure SQL之間的傳遞, 一般常用的'匯入匯出'顯然在Azure AQL上沒有這個選項
- 那從本機端試看看匯入匯出
- 匯入資料來源選擇Azure SQL, 但無法選取資料庫清單, 會出現錯誤訊息
- 資料來源選擇SQL Server native Client 11.0就可以 (預設為10.0)
- 目的地資料庫選擇本機
- 就可以看到SQL Azure上的table與View了
- 一直按'下ㄧ步'直到執行成功
- 在本機資料庫即可看到匯入完成
- 再來反向上傳資料, 本機有一個相同結構的Table要上到Azure SQL
- 這次來源選擇本機
- 從本機將MySecondTable上到Azure SQL
- 會發生錯誤, 原因是匯入匯出的當下, 若目的地資料庫沒有該Table, SQL會自動建立, 但是不包含index, 而index又是Azure SQL Table必須的
- 先在Azure SQL上建立相對應的Table
- 又發生錯誤, 這次的錯誤是字碼頁
- 為了將字串資料改用Unicode, 先將Table DROP 掉, 再用NVARCHAR方式重建
- 再次匯出匯入, 資料上傳成功
- 原本在本機由於是中文版, 定序預設為Chinese_Taiwan_Stroke_CI_AS. 為了避免之後困擾, 之後在Azure SQL開Table都用Unicode, 下圖可見VARCHAR跟NVARCHAR的差異
- 資料也可以藉由BCP匯出 (-P 之後帶自己的密碼)
bcp MyFirstTable out test.txt -c -U azure@yid66sepi2 -S yid66sepi2.database.windows.net -d sql0001 -P ########
- 或是使用Linked Server來選取Azure SQL資料
參考: http://asadkhan1973.blogspot.tw/2012/09/add-sql-azure-as-linked-server.html
在本機執行以下script (user必須帳號加server name, password要改為自己的)
EXEC master.dbo.sp_addlinkedserver
@server = N'Azure',
@srvproduct=N'',
@provider=N'sqlncli',
@datasrc=N'yid66sepi2.database.windows.net',
@catalog=N'sql0001'
EXEC master.dbo.sp_addlinkedsrvlogin
@rmtsrvname=N'Azure',
@useself=N'False',
@locallogin=NULL,
@rmtuser=N'azure@yid66sepi2.database.windows.net',
@rmtpassword='########'
SELECT * FROM Azure.sql0001.dbo.MyFirstTable